Many cloud offerings provide core services via application programming interfaces (APIs). These core services abstract the user interface from details of the underlying database operations, Lightweight Directory Access Protocol (LDAP) interaction, business logic, etc. The core services typically reside on a dedicated server, which can be replicated to spread incoming requests across systems to improve performance and throughput. These cloud offerings can also be extended to allow third party entities to utilize the system via an API abstraction layer. The API abstraction layer provides a means for the third party entities to utilize the core services to build a unique solution for their customers.
Challenges for such a system include dealing with growth and ensuring sufficient performance and load balancing. For example, each of the following will change the demands of the underlying system: growing number of third party entities utilizing the core services; growing number of customers or users accessing the system; and growing level of functionality and complexity of the system as it evolves. One can continue to expand the underlying hardware to address the growth factors above. However, this approach fails to inject real intelligence to the above system.